home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-03-07 | 3.9 KB | 175 lines | [TEXT/MPCC] |
- /*********************/
- /* BLITTER.C */
- /*********************/
- //
- // This file contains the "poor man's profiler" and
- // the screen blitter routine.
- //
-
- /****************************/
- /* EXTERNALS */
- /****************************/
-
- extern Ptr gScreenAddr,gDrawBufferPtr;
- extern long gScreenRowBytes;
-
-
- /****************************/
- /* PROTOTYPES */
- /****************************/
-
- void ProfileIt(void);
- static void BlitBufferToScreen(void);
-
-
- /****************************/
- /* CONSTANTS */
- /****************************/
-
-
- /****************************/
- /* VARIABLES */
- /****************************/
-
-
-
- /********************* PROFILE IT *********************/
- //
- // Calls the blitter routine 1000 times and does a
- // beep at the beginning and end so you can time in
- // on a stopwatch.
- //
-
- void ProfileIt(void)
- {
- long i;
-
- SysBeep(0); // MAKE 1ST BEEP SOUND
-
- for (i=0; i < 1000L; i++) // blit the buffer 1000 times
- BlitBufferToScreen();
-
- SysBeep(0); // MAKE 2ND BEEP SOUND
- }
-
-
- /*************** BLIT BUFFER TO SCREEN ****************/
- //
- // This is a partially optimized blitter routine which
- // will blit the 640x480 buffer to the screen.
- //
- // This has been optimized by using doubles to copy 8 bytes
- // of data at a time.
- //
- // On a PowerMac 6100/60 it takes approximately 14 seconds
- // to execute this 1000 times.
- //
-
- static void BlitBufferToScreen(void)
- {
- long y,rowBytes;
- double *destPtr,*srcPtr;
-
- srcPtr = (double *)gDrawBufferPtr; // get ptr to start of buffer
- destPtr = (double *)gScreenAddr; // get ptr to start of scan line
-
- rowBytes = gScreenRowBytes/8; // calc rowBytes in terms of doubles
-
- for(y=480; y ; y--)
- {
- destPtr[0] = srcPtr[0];
- destPtr[1] = srcPtr[1];
- destPtr[2] = srcPtr[2];
- destPtr[3] = srcPtr[3];
- destPtr[4] = srcPtr[4];
- destPtr[5] = srcPtr[5];
- destPtr[6] = srcPtr[6];
- destPtr[7] = srcPtr[7];
- destPtr[8] = srcPtr[8];
- destPtr[9] = srcPtr[9];
-
- destPtr[10] = srcPtr[10];
- destPtr[11] = srcPtr[11];
- destPtr[12] = srcPtr[12];
- destPtr[13] = srcPtr[13];
- destPtr[14] = srcPtr[14];
- destPtr[15] = srcPtr[15];
- destPtr[16] = srcPtr[16];
- destPtr[17] = srcPtr[17];
- destPtr[18] = srcPtr[18];
- destPtr[19] = srcPtr[19];
-
- destPtr[20] = srcPtr[20];
- destPtr[21] = srcPtr[21];
- destPtr[22] = srcPtr[22];
- destPtr[23] = srcPtr[23];
- destPtr[24] = srcPtr[24];
- destPtr[25] = srcPtr[25];
- destPtr[26] = srcPtr[26];
- destPtr[27] = srcPtr[27];
- destPtr[28] = srcPtr[28];
- destPtr[29] = srcPtr[29];
-
- destPtr[30] = srcPtr[30];
- destPtr[31] = srcPtr[31];
- destPtr[32] = srcPtr[32];
- destPtr[33] = srcPtr[33];
- destPtr[34] = srcPtr[34];
- destPtr[35] = srcPtr[35];
- destPtr[36] = srcPtr[36];
- destPtr[37] = srcPtr[37];
- destPtr[38] = srcPtr[38];
- destPtr[39] = srcPtr[39];
-
- destPtr[40] = srcPtr[40];
- destPtr[41] = srcPtr[41];
- destPtr[42] = srcPtr[42];
- destPtr[43] = srcPtr[43];
- destPtr[44] = srcPtr[44];
- destPtr[45] = srcPtr[45];
- destPtr[46] = srcPtr[46];
- destPtr[47] = srcPtr[47];
- destPtr[48] = srcPtr[48];
- destPtr[49] = srcPtr[49];
-
- destPtr[50] = srcPtr[50];
- destPtr[51] = srcPtr[51];
- destPtr[52] = srcPtr[52];
- destPtr[53] = srcPtr[53];
- destPtr[54] = srcPtr[54];
- destPtr[55] = srcPtr[55];
- destPtr[56] = srcPtr[56];
- destPtr[57] = srcPtr[57];
- destPtr[58] = srcPtr[58];
- destPtr[59] = srcPtr[59];
-
- destPtr[60] = srcPtr[60];
- destPtr[61] = srcPtr[61];
- destPtr[62] = srcPtr[62];
- destPtr[63] = srcPtr[63];
- destPtr[64] = srcPtr[64];
- destPtr[65] = srcPtr[65];
- destPtr[66] = srcPtr[66];
- destPtr[67] = srcPtr[67];
- destPtr[68] = srcPtr[68];
- destPtr[69] = srcPtr[69];
-
- destPtr[70] = srcPtr[70];
- destPtr[71] = srcPtr[71];
- destPtr[72] = srcPtr[72];
- destPtr[73] = srcPtr[73];
- destPtr[74] = srcPtr[74];
- destPtr[75] = srcPtr[75];
- destPtr[76] = srcPtr[76];
- destPtr[77] = srcPtr[77];
- destPtr[78] = srcPtr[78];
- destPtr[79] = srcPtr[79];
-
- destPtr += rowBytes; // skip to next scan line
- srcPtr += 80;
- }
- }
-
-
-
-